2 #ifndef FRAMELIB_CONTEXT_H 3 #define FRAMELIB_CONTEXT_H 18 template <
class T, T *(Global::*getMethod)(
void *),
void(Global::*releaseMethod)(
void *)>
class ManagedPointer
23 ManagedPointer(
const FrameLib_Context &context) : mGlobal(context.mGlobal), mReference(context.mReference)
25 mPointer = (mGlobal->*getMethod)(mReference);
38 (mGlobal->*releaseMethod)(mReference);
46 T *operator->() {
return mPointer; }
47 operator bool()
const {
return mPointer != NULL; }
53 ManagedPointer(
const ManagedPointer&);
54 ManagedPointer& operator=(
const ManagedPointer&);
71 typedef ManagedPointer<FrameLib_LocalAllocator, &Global::getAllocator, &Global::releaseAllocator>
Allocator;
72 typedef ManagedPointer<FrameLib_ConnectionQueue, &Global::getConnectionQueue, &Global::releaseConnectionQueue>
ConnectionQueue;
73 typedef ManagedPointer<FrameLib_DSPQueue, &Global::getDSPQueue, &Global::releaseDSPQueue>
DSPQueue;
FrameLib_Context(FrameLib_Global *global, void *reference)
Definition: FrameLib_Context.h:67
Definition: FrameLib_Global.h:85
Definition: FrameLib_Context.h:10
ManagedPointer< FrameLib_ConnectionQueue, &Global::getConnectionQueue, &Global::releaseConnectionQueue > ConnectionQueue
Definition: FrameLib_Context.h:72
ManagedPointer< FrameLib_DSPQueue, &Global::getDSPQueue, &Global::releaseDSPQueue > DSPQueue
Definition: FrameLib_Context.h:73
ManagedPointer< FrameLib_LocalAllocator, &Global::getAllocator, &Global::releaseAllocator > Allocator
Definition: FrameLib_Context.h:71